package com.shi.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.shi.entity.dto.*;
import com.shi.entity.po.Account;
import com.shi.entity.vo.AccountVO;

import javax.servlet.http.HttpSession;
import java.util.List;
/**
 * (Account)表服务接口
 *
 * @author makejava
 * @since 2024-05-16 17:18:00
 */
public interface AccountService extends IService<Account> {


    /**
     * 新增数据
     *
     * @param accountAddDto 实例对象
     * @return 是否成功
     */
    void add(AccountAddDto accountAddDto);


    /**
     * 通过主键删除数据
     *
     * @param uid 主键
     * @return 是否成功
     */
    void removeById(Integer uid);
    
    /**
     * 通过主键删除数据
     *
     * @param uids 主键列表
     * @return 是否成功
     */
    void removeBatchByIds(List<Integer> uids);

    Account usernameLogin(AccountUsernameLoginDto accountUsernameLoginDto);

    List<Integer> queryRoleIdsByAccountId(Integer accountId);

    /**
     * 为用户费分配角色
     * @param roleIds
     * @param accountId
     */
    void giveRoles(List<Integer> roleIds, Integer accountId);

    Account queryByEmail(String email);

    /**
     * 修改自己的密码
     * @param updateSelfPasswordDto
     */
    void updateSelfPassword(AccountUpdateSelfPasswordDto updateSelfPasswordDto);

    void forgetPassword(AccountForgetPasswordDto forgetPasswordDto,HttpSession session);

    void updateBindEmail(AccountBindEmailDto accountBindEmailDto,HttpSession session);

    Account emailLogin(AccountEmailLoginDto accountEmailLoginDto);

    List<AccountVO> listByCondition(String likeProp);
}
